home *** CD-ROM | disk | FTP | other *** search
/ Shareware Games Galore! / Shareware Games Galore!.iso / arcade / gameser5 / spinout.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  3.9 KB  |  165 lines

  1. 10  REM ibm pc spinout
  2. 20  REM K.R. Sloan, Jr.
  3. 30  REM 1 January 1982
  4. 40  DIM BALL[14]
  5. 50  DIM PADDLE[9]
  6. 60  DIM BRICK[20,4]
  7. 65  RANDOMIZE(VAL(RIGHT$(TIME$,2)))
  8. 70  KEY OFF:PLAY "mb"
  9. 80  LOUD=0
  10. 90  BRUNO$="l16o2b-o3cl8ddc+16do2fp1"
  11. 110  T=8:B=188:L=8:R=308
  12. 120  BH=8:BW=(R-L)/20
  13. 130  BT=T+(BH*4):BB=BT+(BH*4)
  14. 135  CLS
  15. 140  LOCATE 7,12: PRINT "Welcome to Spinout";
  16. 150  LOCATE 8,12: PRINT "ArchMach Version 1";
  17. 160  LOCATE 12,1:PRINT "Choose a key to move the paddle right";
  18. 170  R$=INKEY$:IF R$="" GOTO 170
  19. 180  LOCATE 12,1:PRINT "Choose a key to move the paddle left ";
  20. 190  L$=INKEY$:IF L$="" GOTO 190
  21. 200  IF R$=L$ GOTO 160
  22. 210  LOCATE 12,1:PRINT "Choose a key to serve                ";
  23. 220  S$=INKEY$:IF S$="" GOTO 220
  24. 230  IF (R$=S$)OR(L$=S$) GOTO 160
  25. 240  LOCATE 12,1:PRINT "Choose a key to turn noise on/off   ";
  26. 250  N$=INKEY$:IF N$="" GOTO 250;
  27. 260  IF (R$=N$)OR(L$=N$)OR(S$=N$) GOTO 160
  28. 270  LOCATE 12,1:INPUT;"How good are you at this game (1-10)";SKILL
  29. 275  IF SKILL<1 GOTO 270
  30. 276  IF SKILL>10 GOTO 270
  31. 280  SKILL=SKILL/10
  32. 290  MAXVX=6+(4*SKILL):MAXVY=MAXVX
  33. 295  G=SKILL/5
  34. 296  DEF SEG=0:EQUIPMENT%=PEEK(&H410) ':POKE &H410,EQUIPMENT%-&H10
  35. 297  WIDTH 40:WIDTH 80:SCREEN 0,0,0:SCREEN 1:COLOR 1,0:CLS
  36. 300  LINE (0,0)-(319,199),0,BF
  37. 310  FOR BY=0 TO 3
  38. 320  FOR BX=0 TO 19
  39. 330  BRICK[1+BX,1+BY]=10+50*BY
  40. 340  LINE (L+2+(BW*BX),BT+2+(BH*BY))-STEP (BW-4,BH-4),2+INT(BY/2),BF
  41. 350  NEXT BX,BY
  42. 360  SCORE = 0
  43. 370  LINE (L,T)-(R,T)
  44. 380  LINE -(R,B)
  45. 390  LINE -(L,B)
  46. 400  LINE -(L,T)
  47. 410  X=160:Y=100
  48. 420  LASTD$=""
  49. 430  FOR I=1 TO 5
  50. 440  FOR J=1 TO 5
  51. 450  IF ((I-3)*(I-3))+((J-3)*(J-3))<6.25 THEN PSET (X-3+I,Y-3+J)
  52. 460  NEXT J,I
  53. 470  GET (X-2,Y-2)-(X+2,Y+2),BALL
  54. 480  PL=150:PR=170:PY=B-20
  55. 490  LINE (PL,PY)-(PR,PY),1,BF
  56. 500  GET(PL,PY)-(PR,PY),PADDLE
  57. 510  REM main loop
  58. 520  IF LOUD=1 THEN PLAY BRUNO$
  59. 530  FOR SHOT=1 TO 4
  60. 540  LOCATE 25,1
  61. 550  PRINT USING "#####";SCORE;
  62. 560  LOCATE 25,8
  63. 570  PRINT USING "Ball #  ";SHOT;
  64. 580  LOCATE 25,18
  65. 590  PRINT "K.R.Sloan,Jr.  1Jan82";
  66. 600  IF X>R THEN X=R
  67. 610  IF X<L THEN X=L
  68. 620  IF Y<T THEN Y=T
  69. 630  IF Y>B THEN Y=B
  70. 640  PUT(X-2,Y-2),BALL
  71. 650  X=L+RND(X)*(R-L)
  72. 660  Y=B-10
  73. 670  PUT(X-2,Y-2),BALL
  74. 680  VX=6*RND(1)-3
  75. 690  VY=-5-2*RND(1)
  76. 700  SPIN=0
  77. 710  FAST=1+SKILL
  78. 720  GOSUB 1410 `MOVE PADDLE
  79. 730  IF D$<>S$ GOTO 720
  80. 740  OX=X:OY=Y:OBX=BX:OBY=BY
  81. 750  OVX=VX:OVY=VY
  82. 760  VX=OVX-(SPIN*OVY*0.05):VY=OVY+(SPIN*OVX*0.05)+G
  83. 761  SPIN=SPIN*0.9999
  84. 770  IF VX>MAXVX THEN VX=MAXVX
  85. 771  IF VY>MAXVY THEN VY=MAXVY
  86. 780  IF VX<-MAXVX THEN VX=-MAXVX
  87. 781  IF VY<-MAXVY THEN VY=-MAXVY
  88. 790  X=X+VX:Y=Y+VY
  89. 800  BX=INT((X-L)/BW)
  90. 810  IF BX>19 THEN BX=19
  91. 820  IF BX<0 THEN BX=0
  92. 830  BY=INT((Y-BT)/BH)
  93. 840  IF BY>3 GOTO 1050
  94. 850  IF BY<0 GOTO 1050
  95. 860  IF BRICK[1+BX,1+BY]<=0 GOTO 1050
  96. 870  IF BY>1 GOTO 890
  97. 880  VY=VY*FAST
  98. 890  IF (OBX<>BX)THEN VX=-VX
  99. 900  IF (OBY<>BY)THEN VY=-VY
  100. 910  SCORE=SCORE+BRICK[1+BX,1+BY]
  101. 920  SOUND 440,2*LOUD
  102. 930  PUT(OX-2,OY-2),BALL,XOR
  103. 940  LINE (L+2+(BW*BX),BT+2+(BH*BY))    -STEP (BW-4,BH-4),0,BF
  104. 950  PUT(OX-2,OY-2),BALL,XOR
  105. 960  BRICK[1+BX,1+BY]=-BRICK[1+BX,1+BY]
  106. 970  IF SCORE<6800 GOTO 1050
  107. 972  LOCATE 25,1
  108. 974  PRINT USING "#####";SCORE;
  109. 980  FOR FLASH=1 TO 8
  110. 990  COLOR FLASH,0.5+RND(FLASH)
  111. 1000  PLAY "mfaemb"
  112. 1010  NEXT FLASH
  113. 1040  GOTO 1340
  114. 1050  IF X<=L THEN X=L+L-X:VX=-VX:VY=VY+SPIN:SOUND 600,2*LOUD
  115. 1060  IF X>=R THEN X=R+R-X:VX=-VX:VY=VY-SPIN:SOUND 1200,2*LOUD
  116. 1070  IF Y<=T THEN Y=T+T-Y:VY=-VY:VX=VX-SPIN:SOUND 880,2*LOUD
  117. 1080  IF Y>=B GOTO 1310
  118. 1090  IF (Y<PY)OR(OY>PY) THEN GOTO 1270
  119. 1100  IF ((PL-2)<X)AND(X<(PR+2)) GOTO 1130
  120. 1110  IF ((PL-2)<OX)AND(OX<(PR+2)) GOTO 1130
  121. 1120  GOTO 1270
  122. 1130  Y=PY+PY-Y
  123. 1140  SOUND 300,5*LOUD
  124. 1150  IF (RND(1)*2)>SKILL GOTO 1210
  125. 1160  BX=INT(RND(1)*19.99):BY=INT(RND(1)*3.99):
  126. 1170  IF BRICK[1+BX,1+BY]>0 GOTO 1210
  127. 1180  BRICK[1+BX,1+BY]=-BRICK[1+BX,1+BY]
  128. 1190  LINE (L+2+(BW*BX),BT+2+(BH*BY)) -STEP (BW-4,BH-4),2+INT(BY/2),BF
  129. 1200  SCORE=SCORE-BRICK[1+BX,1+BY]
  130. 1210  LOCATE 25,1
  131. 1220  PRINT SCORE;
  132. 1230  VY=-VY
  133. 1240  MISS=(X-(PL+PR)/2)/(PL-PR)
  134. 1250  VX=VX+VY*MISS*SKILL*5
  135. 1260  SPIN=(SPIN*SKILL)+MISS*SKILL
  136. 1270  PUT(X-2,Y-2),BALL,XOR
  137. 1280  PUT(OX-2,OY-2),BALL,XOR
  138. 1290  GOSUB 1410 'move paddle
  139. 1300  GOTO 740
  140. 1310  REM lost ball
  141. 1320  IF LOUD=1 THEN SOUND 200,20
  142. 1330  NEXT SHOT
  143. 1340  REM End of Game
  144. 1341  'DEF SEG=0:POKE &H410,125:WIDTH 40:WIDTH 80:SCREEN 0,0,0
  145. 1342  WIDTH 80:SCREEN 0,0,0
  146. 1350  LOCATE 12,20
  147. 1360  PRINT "Do you want to play another game?";
  148. 1370  D$=INKEY$
  149. 1380  IF D$="y" THEN RUN
  150. 1390  IF D$="n" THEN STOP
  151. 1400  GOTO 1370
  152. 1410  REM move paddle routine
  153. 1420  OPL=PL
  154. 1430  D$=INKEY$
  155. 1440  IF D$=N$ THEN LOUD=-1*LOUD+1
  156. 1450  IF D$=L$ THEN PL=PL-5:GOTO 1430
  157. 1460  IF D$=R$ THEN PL=PL+5:GOTO 1430
  158. 1470  IF PL<L THEN PL=L
  159. 1480  IF PL>(R-20) THEN PL=R-20
  160. 1490  IF OPL=PL THEN RETURN
  161. 1500  PR=PL+20
  162. 1510  PUT (OPL,PY),PADDLE,XOR
  163. 1520  PUT(PL,PY),PADDLE,XOR
  164. 1530  RETURN
  165.